package utils;

/**
 * Comandi Ebtables statici, che non necessitano cioè di alcun parametro di ingresso.
 * 
 * @author Dumella De Rosa Gennaro
 */
public class Command {

	
	/**
	 *	Imposta la politica della tabella FILTER catena FORWARD a DROP. E' un comando idempotente e resituisce codice di uscita 0 anche in riscrittura. 
	 */
	public static String getEbtablesForwardPolicyDROP()
	{	
		return "ebtables -t filter -P FORWARD DROP";	
	}
	
	/**
	 *	Imposta la politica della tabella NAT catena POSTROUTING a ACCEPT. E' un comando idempotente e resituisce codice di uscita 0 anche in riscrittura. 
	 */
	public static String getEbtablesPostroutingPolicyACCEPT()
	{	
		return "ebtables -t nat -P POSTROUTING ACCEPT";	
	}
	
	/**
	 *	Abilita il protocollo ARP nella tabella FILTER catena FORWARD. Non e' un comando idempotente. 
	 */
	public static String getEbtablesForwardArpACCEPT()
	{	
		return "ebtables -t filter -A FORWARD -p ARP -j ACCEPT";	
	}
	
	/**
	 *	Mostra numero di regole, regole e politica della tabella FILTER catena FORWARD. 
	 */
	public static String getEbtablesForwardList()
	{	
		return "ebtables -t filter -L FORWARD";	
	}
	
	public static String getEbtablesForwardRESET()
	{	
		return "ebtables -t filter -F FORWARD";	
	}
	
	public static String getEbtablesPostroutingRESET()
	{	
		return "ebtables -t nat -F POSTROUTING";	
	}
	
	public static String getEbtablesForwardPolicyRESET()
	{	
		return "ebtables -t filter -P FORWARD ACCEPT";	
	}
	
	/*##############################TRAFFIC CONTROL ############################################*/
	
	/**
	 *	Mostra le discipline di accodamento su tutte le interfacce. 
	 */
	public static String getTratticControlQdiscShow()
	{
		return "tc qdisc show";
	}
	/**
	 *	Regola per eliminare le qdisc. Necessita del nome dell'interfaccia. 
	 */
	public static String getTratticControlQdiscRESET()
	{
		return "tc qdisc del dev DEV root";
	}
	
	
}
